package host;

import homeMadeExceptions.NotYetImplementedException;
import miniworld.RoutingNetworkApi;
import datatypes.BluetoothDeviceAddress;
import datatypes.Host;
import datatypes.Message;

@SuppressWarnings("unused")
public abstract class DiscoveryNetworkSocket extends RoutingNetworkApi {

	
	public DiscoveryNetworkSocket(Host host) {
		super(host);
	}
	
	//Interfaces for User or APP
	public void publishLocalServices(String newService) throws NotYetImplementedException{
		throw new NotYetImplementedException("DiscoveryNetworkSocket_publishLocalServices Nicht implementiert");
	}
	
	public void updateLocalService (String oldService, String newService) throws NotYetImplementedException{
		throw new NotYetImplementedException("DiscoveryNetworkSocket_updateLocalServices Nicht implementiert");
	}
	
	public void deleteLocalService (String service) throws NotYetImplementedException {
		throw new NotYetImplementedException("DiscoveryNetworkSocket_deleteLocalService nicht implementiert");
	}
	
	public void getAllAvailableServices() throws NotYetImplementedException{
		throw new NotYetImplementedException("DiscoveryNetworkSocket_getAllAvailableServises nicht implementiert");
	}
	
	public void askHostForServices (BluetoothDeviceAddress target) throws NotYetImplementedException {
		throw new NotYetImplementedException("DiscoveryNetworkSocket_askHostForServices");
	}
	
	public void findSpecificService (String serviceDescription) throws NotYetImplementedException {
		throw new NotYetImplementedException ("DiscoveryNetworkSocket_findSpecificService nicht implementiert");
	}
	
	public void enableDiscoveryMechanism (){
		super.enableDiscoveryMechanism();
	}

	public void disableDiscoveryMechanism () {
		super.disableDiscoveryMechanism();
	}
	
	protected void invokeSendMessage(Message msg, BluetoothDeviceAddress target){
		super.invokeSendMessage(msg, target);
	}
	
	//Routing Protocol will inform if there is something intresting
	public void receiveMessage(Message msg, BluetoothDeviceAddress sender) throws NotYetImplementedException{
		throw new NotYetImplementedException("DiscoveryNetworkSocket_Receive Nicht implementiert");
	}
	
	public void onConnectionEstablished (BluetoothDeviceAddress remoteHost) throws NotYetImplementedException {
		throw new NotYetImplementedException("DiscoveryNetworkSocket_onConnectionEstablished Nicht implementiert");
	}
	public void onConnectionLost(BluetoothDeviceAddress remoteHost) throws NotYetImplementedException{
		throw new NotYetImplementedException("DiscoveryNetworkSocket_onConnectionLost Nicht implementiert");
	}
	
	public void onMessageLost (Message msg, BluetoothDeviceAddress target) throws NotYetImplementedException {
		throw new NotYetImplementedException ("DiscoveryNetworkSocket_onMessageLost");
	}

	public void onMessageACK(Message msg, BluetoothDeviceAddress target) throws NotYetImplementedException {
		throw new NotYetImplementedException ("DiscoveryNetworkSocket_onMessageAck");
	}
	
	//--> Timestep Notification
	public void notificationAPI () {}
}
